using System;
using System.Collections;
using System.Data;
using System.Data.Common;
using System.Collections.Generic;

using WHC.Pager.Entity;
using Microsoft.Practices.EnterpriseLibrary.Data;
using WHC.Hotel.Entity;
using WHC.Hotel.IDAL;
using WHC.OrderWater.Commons;

namespace WHC.Hotel.DAL
{
    /// <summary>
    /// TeaWaiter 的摘要说明。
    /// </summary>
    public class TeaWaiter : BaseDAL<TeaWaiterInfo>, ITeaWaiter
    {
        #region 对象实例及构造函数

        public static TeaWaiter Instance
        {
            get
            {
                return new TeaWaiter();
            }
        }
        public TeaWaiter()
            : base("CL_TeaWaiter", "ID")
        {
        }

        #endregion

        /// <summary>
        /// 将DataReader的属性值转化为实体类的属性值，返回实体类
        /// </summary>
        /// <param name="dr">有效的DataReader对象</param>
        /// <returns>实体类对象</returns>
        protected override TeaWaiterInfo DataReaderToEntity(IDataReader dataReader)
        {
            TeaWaiterInfo teaWaiterInfo = new TeaWaiterInfo();
            SmartDataReader reader = new SmartDataReader(dataReader);

            teaWaiterInfo.ID = reader.GetInt32("ID");
            teaWaiterInfo.WaiterNo = reader.GetString("WaiterNo");
            teaWaiterInfo.Name = reader.GetString("Name");
            teaWaiterInfo.Sex = reader.GetString("Sex");
            teaWaiterInfo.IDNumber = reader.GetString("IDNumber");
            teaWaiterInfo.Telephone = reader.GetString("Telephone");
            teaWaiterInfo.Area = reader.GetString("Area");
            teaWaiterInfo.Grade = reader.GetString("Grade");
            teaWaiterInfo.Note = reader.GetString("Note");

            return teaWaiterInfo;
        }

        /// <summary>
        /// 将实体对象的属性值转化为Hashtable对应的键值
        /// </summary>
        /// <param name="obj">有效的实体对象</param>
        /// <returns>包含键值映射的Hashtable</returns>
        protected override Hashtable GetHashByEntity(TeaWaiterInfo obj)
        {
            TeaWaiterInfo info = obj as TeaWaiterInfo;
            Hashtable hash = new Hashtable();

            hash.Add("WaiterNo", info.WaiterNo);
            hash.Add("Name", info.Name);
            hash.Add("Sex", info.Sex);
            hash.Add("IDNumber", info.IDNumber);
            hash.Add("Telephone", info.Telephone);
            hash.Add("Area", info.Area);
            hash.Add("Grade", info.Grade);
            hash.Add("Note", info.Note);

            return hash;
        }

    }
}